package lintulaskenta.entity;



import java.io.Serializable;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;

/*
 * Parvihavainto on havainto suuresta parvesta yksittäistä lintulajia.
 * Parvihavainto liittyy aina johonkin pisteeseen (pistevuoteen).
 */

@Entity
public class Parvihavainto implements Serializable {
        
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private long parvihavaintoId;    
    @Column
    private String parvilaji;
    @Column
    private int parvenKoko;
    @ManyToOne(cascade = CascadeType.MERGE)
    @JoinColumn
    private Pistevuosi pistevuosi;
    @Column
    private int pisteenNumero;

    public Parvihavainto() {
    }

    public int getPisteenNumero() {
        return pisteenNumero;
    }

    public void setPisteenNumero(int pisteenNumero) {
        this.pisteenNumero = pisteenNumero;
    }

    public Parvihavainto(String parvilaji, int parvenKoko, Pistevuosi pistevuosi) {
        this.parvilaji = parvilaji;
        this.parvenKoko = parvenKoko;
        this.pistevuosi = pistevuosi;
    }

    public int getParvenKoko() {
        return parvenKoko;
    }

    public void setParvenKoko(int parvenKoko) {
        this.parvenKoko = parvenKoko;
    }

    public long getParvihavaintoId() {
        return parvihavaintoId;
    }

    public String getParvilaji() {
        return parvilaji;
    }

    public void setParvilaji(String parvilaji) {
        this.parvilaji = parvilaji;
    }

    public Pistevuosi getPistevuosi() {
        return pistevuosi;
        }    

    public void setPistevuosi(Pistevuosi p) {
        if (p != null) {
            this.pistevuosi = p;
            if (!p.getParvihavainnot().contains(this)) {
                p.getParvihavainnot().add(this);
            }
        }
    }
   
}
